<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html   xmlns="http://www.w3.org/1999/xhtml" 
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:h="http://java.sun.com/jsf/html"  
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:p="http://primefaces.org/ui"
        xmlns:pe="http://primefaces.org/ui/extensions">
    <ui:composition>
        
         <p:dialog id="generadorConsultaDlg" 
                  widgetVar="generadorConsultaWgt"
                  header="Consulta avanzada"  
                  modal="true" 
                  visible="#{consultaBean.consultaSQL == null}"
                  draggable="false"
                  resizable="false"
                  width="650" >
         <h:form id="generadorConsultaFrm" >  

            <p:wizard id="generadorConsultaWzd" 
                      nextLabel="Siguiente"
                      widgetVar="generadorConsultaWgt2" 
                      backLabel="Anterior"
                      showStepStatus="false"
                      flowListener="#{consultaBean.procesarFlujo}">   

                <p:tab id="seleccionTab" title="Selección">  
                    <p:panel id="SeleccionPnl">  
                        
                        <p:messages 
                        id="mensajesMsg" 
                        globalOnly="true" />
                        
                        <pe:dynaForm id="seleccionDfr"
                                     widgetVar="seleccionWgt"
                                     value="#{consultaBean.modeloSelectores}"
                                     var="data">
                            
                            <f:facet name="headerRegular">
                                <h:outputText id="descripcionSeleccionTxt" value="Seleccione los campos a consultar según la categoría:" />
                                <p:separator style="width:585px"/>
                            </f:facet>
                            
                            <pe:dynaFormControl type="selector" for="selectorScm" >
                                <p:selectCheckboxMenu id="selectorScm" label="#{data.name}" 
                                          value="#{data.value}"
                                          filter="false"
                                          style="width:180px; margin-top:10px;"
                                          panelStyle="width:180px">  
                                    <f:selectItems value="#{data.selectItems}" />  
                                </p:selectCheckboxMenu>
                            </pe:dynaFormControl>
                            
                            <pe:dynaFormControl type="descripcion" for="descripcionTxt" >
                                <h:outputLabel id="descripcionTxt" value="#{data.value}" 
                                               style="margin-top:10px;" />
                            </pe:dynaFormControl>
                            
                        </pe:dynaForm>
                    </p:panel>  
                </p:tab>  

                <p:tab id="filtradoTab" title="Filtrado">  
                    <p:panel id="filtradoPnl">   
                        <h:outputText id="descripcionFiltradoTxt" value="Seleccione los campos por cuales desea filtrar la busqueda según la categoría:" />
                        
                        <br/>
                        
                        <h:panelGrid columns="3">
                        
                        <p:selectOneMenu id="fuenteFiltroSom" 
                                         value="#{consultaBean.fuenteFiltro}"
                                         style="margin-top:10px; margin-bottom:10px;">
                            <p:ajax event="change" update="campoFiltroSom" />
                            <f:selectItem itemLabel="Seleccione una categoria..." itemValue="" />
                            <f:selectItems value="#{consultaBean.itemsFuenteFiltro}" />
                        </p:selectOneMenu>
                        
                        <p:selectOneMenu id="campoFiltroSom" 
                                         value="#{consultaBean.campoFiltro}"
                                         style="margin-top:10px; margin-bottom:10px;">
                            <p:ajax event="change" update="agregarFiltroBtn" />
                            <f:selectItem itemLabel="Seleccione un campo..." itemValue="" />
                            <f:selectItems value="#{consultaBean.itemsCampoFiltro}" />
                        </p:selectOneMenu>
                        
                        <p:commandButton  id="agregarFiltroBtn"
                                         value="Agregar filtro"
                                         actionListener="#{consultaBean.agregarFiltro}"
                                         update="filtradoDfr,fuenteFiltroSom,campoFiltroSom"
                                         process="@this,filtradoDfr"
                                         style="width:120px; margin-top:10px; margin-bottom:10px;"/>
                        
                        </h:panelGrid>
                        
                        <p:separator style="width:585px"/>
                        
                        <pe:dynaForm id="filtradoDfr"
                                     widgetVar="filtradoWgt"
                                     value="#{consultaBean.modeloFiltros}"
                                     var="data">                        
                            
                            <pe:dynaFormControl type="campo" for="campoTxt" >
                                <h:outputLabel id="campoTxt" value="#{data.value}" 
                                               style="margin-top:10px;"/>
                            </pe:dynaFormControl>
                            
                            <pe:dynaFormControl type="comparacion" for="comparacionCmb" >
                                <p:selectOneMenu id="comparacionCmb" 
                                                 value="#{data.value}"
                                                 required="true"
                                                 requiredMessage="#{msgvld.requerido}"
                                                 style="margin-top:10px;">
                                    <f:selectItem itemLabel="Seleccione..." itemValue="" />
                                    <f:selectItems value="#{data.selectItems}" />
                                </p:selectOneMenu>
                            </pe:dynaFormControl>
                            
                            <pe:dynaFormControl type="entrada" for="entradaTxt" >
                                <p:inputText id="entradaTxt" 
                                             value="#{data.value}" 
                                             required="true"
                                             requiredMessage="#{msgvld.requerido}"
                                             style="margin-top:10px;"/>
                            </pe:dynaFormControl>
                            
                            <pe:dynaFormControl type="seleccion_simple" for="simpleCmb" >
                                <p:selectOneMenu id="simpleCmb" 
                                                 value="#{data.value}"
                                                 required="true"
                                                 requiredMessage="#{msgvld.requerido}"
                                                 style="margin-top:10px;">
                                    <f:selectItem itemLabel="Seleccione..." itemValue="" />
                                    <f:selectItems value="#{data.selectItems}" />
                                </p:selectOneMenu>
                            </pe:dynaFormControl>
                            
                            <pe:dynaFormControl type="seleccion_multiple" for="multipleCmb" >
                                <p:selectCheckboxMenu id="multipleCmb" label="#{data.name}" 
                                          value="#{data.value}"
                                          filter="false"
                                          required="true"
                                          requiredMessage="#{msgvld.requerido}"
                                          style="margin-top:10px;">  
                                    <f:selectItems value="#{data.selectItems}" />  
                                </p:selectCheckboxMenu>
                            </pe:dynaFormControl>
                            
                            <pe:dynaFormControl type="calendario" for="calendarioCld" >
                                <p:calendar id="calendarioCld" 
                                            value="#{data.value}"  
                                            required="true"
                                            requiredMessage="#{msgvld.requerido}"
                                             pattern="dd/MM/yyyy"
                                            style="margin-top:10px;"/> 
                            </pe:dynaFormControl>
                            
                            <pe:dynaFormControl type="seleccion_binaria" for="binariaRdb" >
                                <p:selectOneRadio id="binariaRdb" value="#{data.value}"
                                                  style="margin-top:10px;">  
                                    <f:selectItems value="#{data.selectItems}" />   
                                </p:selectOneRadio>
                            </pe:dynaFormControl>
                            
                            <pe:dynaFormControl type="requerido" for="requeridoChk" >
                                <h:outputText value="Requerido:"/>  
                                <p:selectBooleanCheckbox id="requeridoChk" value="#{data.value}" 
                                                         style="margin-top:10px;"/> 
                            </pe:dynaFormControl>
                            
                            <pe:dynaFormControl  type="eliminar" for="eliminarBtn" >
                                <p:commandButton id="eliminarBtn"
                                         value="Eliminar filtro"
                                         actionListener="#{consultaBean.eliminarFiltro}"
                                         update="@form"
                                         process="@this"
                                         style="margin-top:10px;">
                                    <f:attribute name="fila" value="#{data.parametros['fila']}" />
                                 </p:commandButton>
                            </pe:dynaFormControl>
                            
                        </pe:dynaForm>

                    </p:panel> 
                </p:tab>
                
                <p:tab id="ordenacionTab" title="Ordenación">  
                    <p:panel id="ordenacionPnl">
                        
                        <h:outputText id="descripcionOrdenacionTxt" value="Seleccione los campos por cuales desea ordenar la busqueda:" />
                        
                        <br/>
                        
                        <h:panelGrid columns="2">
                        
                        <p:selectOneMenu id="campoOrdenadorSom" 
                                         value="#{consultaBean.campoOrdenador}">
                            <p:ajax event="change" update="agregarOrdenadorBtn" />
                            <f:selectItem itemLabel="Seleccione un campo..." itemValue="" />
                            <f:selectItems value="#{consultaBean.itemsCampoOrdenador}" />
                        </p:selectOneMenu>
                        
                        <p:commandButton id="agregarOrdenadorBtn"
                                         value="Agregar ordenador"
                                         actionListener="#{consultaBean.agregarOrdenador}"
                                         update="ordenacionDfr,campoOrdenadorSom"
                                         process="@this,ordenacionDfr"
                                         style="width:150px"/>
                        
                        </h:panelGrid>
                        
                        <p:separator style="width:585px"/>
                        
                        <pe:dynaForm id="ordenacionDfr"
                                     widgetVar="ordenacionWgt"
                                     value="#{consultaBean.modeloOrdenadores}"
                                     var="data">
                        
                            <pe:dynaFormControl type="campo" for="campo2Txt" >
                                <h:outputLabel id="campo2Txt" value="#{data.value}" />
                             </pe:dynaFormControl>

                            <pe:dynaFormControl type="ordenador" for="ordenCmb" >
                                <p:selectOneMenu id="ordenCmb" 
                                                 value="#{data.value}"
                                                 required="true"
                                                 requiredMessage="#{msgvld.requerido}">
                                    <f:selectItem itemLabel="Seleccione..." itemValue="" />
                                    <f:selectItems value="#{data.selectItems}" />
                                </p:selectOneMenu>
                            </pe:dynaFormControl>
                            
                            <pe:dynaFormControl  type="eliminar" for="eliminarBtn" >
                                <p:commandButton id="eliminarBtn"
                                         value="Eliminar ordenador"
                                         actionListener="#{consultaBean.eliminarOrdenador}"
                                         update="@form"
                                         process="@this">
                                    <f:attribute name="fila" value="#{data.parametros['fila']}" />
                                 </p:commandButton>
                            </pe:dynaFormControl>
                        
                        </pe:dynaForm>
                    </p:panel> 
                </p:tab>
                
                <p:tab id="confirmacionTab" title="Confirmación">  
                    <p:panel id="confirmacionPnl">
                        
                        <h:outputText id="confirmacionTxt" value="#{consultaBean.confirmacion}" escape="false"/>
                        
                        <br />
                        <p:spacer />
                        
                        <p:commandButton id="continuarBtn" 
                                         value="Continuar"
                                         actionListener="#{bean[metodo](consultaBean.consultaSQL)}"
                                         update="#{actualizacion}"
                                         process="#{procesamiento}"
                                         ajax="#{ajax}"
                                         onmouseup="generadorConsultaWgt.hide();"
                                         oncomplete="generadorConsultaWgt.loadStep(generadorConsultaWgt.cfg.steps[0], true);" />
                        
                    </p:panel> 
                </p:tab>
                
            </p:wizard>  

        </h:form> 
        </p:dialog>
        
    </ui:composition>
</html>
